Example for Plotting#

[1]:
import lapy
from lapy import TriaMesh, TetMesh, Solver, plot, io
[2]:
tria = TriaMesh.read_vtk("../data/cubeTria.vtk")
fem = Solver(tria)
evals, evecs = fem.eigs(k=3)
evDict = dict()
evDict['Refine'] = 0
evDict['Degree'] = 1
evDict['Dimension'] = 2
evDict['Elements'] = len(tria.t)
evDict['DoF'] = len(tria.v)
evDict['NumEW'] = 3
evDict['Eigenvalues'] = evals
evDict['Eigenvectors'] = evecs
io.write_ev("../data/cubeTria.ev", evDict)
--> VTK format         ...
 --> DONE ( V: 2402 , T: 4800 )

TriaMesh with regular Laplace-Beltrami
Solver: spsolve (LU decomposition) ...
[3]:
plot.plot_tria_mesh(tria, vfunc=evecs[:,1], xrange=None, yrange=None, zrange=None, showcaxis=False, caxis=None)
[4]:
plot.plot_tria_mesh(tria, vfunc=evecs[:,1], xrange=[-2, 2], yrange=[-2, 2], zrange=[-1, 1], showcaxis=True, caxis=[-0.3, 0.5])
[5]:
tetra = TetMesh.read_vtk("../data/cubeTetra.vtk")
fem = Solver(tetra)
evals, evecs = fem.eigs(k=3)
evDict = dict()
evDict['Refine'] = 0
evDict['Degree'] = 1
evDict['Dimension'] = 2
evDict['Elements'] = len(tetra.t)
evDict['DoF'] = len(tetra.v)
evDict['NumEW'] = 3
evDict['Eigenvalues'] = evals
evDict['Eigenvectors'] = evecs
io.write_ev("../data/cubeTetra.ev", evDict)
--> VTK format         ...
 --> DONE ( V: 9261 , T: 48000 )

TetMesh with regular Laplace
Solver: spsolve (LU decomposition) ...
[6]:
plot.plot_tet_mesh(tetra, vfunc=evecs[:,1], xrange=None, yrange=None, zrange=None, showcaxis=False, caxis=None)
Flipped 24000 tetrahedra
Found 4800 triangles on boundary.
[7]:
plot.plot_tet_mesh(tetra, cutting=('f>0'), vfunc=evecs[:,1], xrange=[-2, 2], yrange=[-2, 2], zrange=[-1, 1], showcaxis=True, caxis=[-0.3, 0.5])
Flipped 11446 tetrahedra
Found 3120 triangles on boundary.